public class test {
    public static void main(String[] args) {
//位操作符
        //&  按位与
        //   按位与的操作数有两个，针对的是操作数的二进制位
        //  运算规则为，如果两个操作数对应的二进制位均为1，则结果对应的位为1，否则为0
     /*   byte a = 2;
        byte b = 3;
        //2 的二进制位为 ：
        //0000 0010
        // 3 的二进制位为：
        //0000 0011
        //则两个数的按位与结果为：
        //0000 0010         转换为十进制，结果为2
        System.out.println(a&b);*/
        //针对按位与的特性,可以得出两个结论
        //一个数 按位与 其本身，结果还是其本身
        // 一个数 按位与 0 ，结果还是0  ;
      //  |按位或
        //按位或的操作数有两个
        // 其运算规则为：如果两个操作数对应的二进制位均为0，则结果的该位为0，否则结果的该位为1
      /*  byte a1 = 2;
        byte b2 = 3;
        // 0000 0010
        // 0000 0011
        //结果：
        //0000 0011  ——转换为十进制，结果为3。
        System.out.println(a1|b2);*/
        // 对于按位或的规则，我们可以得出结论：
        //一个数按位或其本身,结果还是其本身
//     ^ 按位异或   按位异或也是二进制运算符，其操作数有两个
        //   其运算规则是，将两个操作数对应的二进制位进行比较，如果相同，则结果中该位为0，不同该位为1
     /*   byte a1  = 3;
        byte b1 = 5;
        // 3 的二进制：0000 0011
        // 5 的二进制：0000 0101
        //3^5 的结果： 0000 0110 ——转换为十进制为6
        System.out.println(a1^b1);*/
        // 一个数 按位异或 其本身，则结果为0
        // 一个数 按位异或  0，则结果为其本身
//  ~    按位取反
      //按位取反的操作数与其他位运算符不同，操作数只有1个
      //其运算规则是将一个数的二进制位全部取反，即将1变成0，将0变成1
      /*  byte a3 = 5;
        // 0000 0101
        //按位取反的结果：~5：
        // 1111 1010 -- 这是补码
        // 1000 0101    — 转换成原码
        // 结果为 - 6
        System.out.println(~a3);*/
//  移位操作符：





























































    }
}
